1
Introduction aux agents de résolution de problèmes
PolyU COMP5511Lecture 2
00:00

Du réflexe à la planification

Dans l'évolution de la conception des agents, nous passons des Agents réflexes, which map percepts directly to actions based on simple rules (e.g., “If car in front brakes, initiate braking”), to Agents de résolution de problèmes. Les agents réflexes opèrent sur le contexte immédiat, tandis que les agents de résolution de problèmes sont orientés objectif. Ils considèrent les conséquences futures de leurs actions pour trouver une séquence qui satisfait un objectif spécifique.

  • Agent réflexe : $Action = Function(Percept)$
  • Agent planificateur : $Action\_Sequence = Search(State, Goal)$

La représentation atomique de l'état

À ce niveau fondamental, les agents utilisent une Représentation atomique. Cela signifie que l'état du monde est traité comme une boîte noire — un nœud unique sans structure interne visible par l'algorithme de recherche. L'agent raisonne uniquement sur :

  • États ($S$) : Instantanés de l'environnement.
  • Actions ($A$) : Transitions entre les états.
  • Test d'objectif : Un contrôle booléen pour savoir si l'état $s \in S_{goal}$.

La boucle de résolution de problèmes

Un agent de résolution de problèmes suit un cycle distinct en quatre étapes pour naviguer dans l'environnement :

  1. Formulation de l'objectif : Déterminer quel objectif poursuivre en fonction de la situation actuelle.
  2. Formulation du problème : Abstraire le monde réel en un modèle mathématique (états et actions).
  3. Recherche : Simuler des séquences d'actions pour trouver le chemin optimal.
  4. Exécution : Exécuter les actions trouvées pendant la phase de recherche sans autre délibération (en supposant un environnement statique).
Implémentation Python (agent_types.py)
1
class ReflexAgent:
2
defact(self, percept):
3
# Direct mapping: Rule -> Action
4
return rules.get(percept, default_action)
5
6
class ProblemSolvingAgent:
7
def__init__(self):
8
self.seq = [] # Buffered action sequence
9
10
defact(self, percept):
11
# If we are mid-execution, continue
12
ifself.seq:
13
returnself.seq.pop(0)
14
15
# Otherwise, Plan (Search)
16
state = self.update_state(percept)
17
goal = self.formulate_goal(state)
18
problem = self.formulate_problem(state, goal)
19
20
# Search returns a list of actions
21
self.seq = search_algorithm(problem)
22
23
returnself.seq.pop(0)